﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Web.DynamicData;
using System.Data.SqlClient;

namespace salaEstudosEdukanteUsuario
{
    public partial class Insert : System.Web.UI.Page
    {
        protected MetaTable table;

        protected void Page_Init(object sender, EventArgs e)
        {
            DynamicDataManager1.RegisterControl(DetailsView1);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            table = DetailsDataSource.GetTable();
            Title = table.DisplayName;
        }

        protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            if (e.CommandName == DataControlCommands.CancelCommandName)
            {
                Response.Redirect(table.ListActionPath);
            }
        }

        protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
        {
            if (e.Exception == null || e.ExceptionHandled)
            {
                //Usuario Cadastrado. Resgatar seu código, abre a conecção com o banco de dados, para puxar essa informação.                
                SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                //select no maior codigoUsuario na tabela usuario
                string sql = "Select MAX(codigoUsuario) AS codigoUsuario from usuario";

                SqlCommand cmdUsuario = new SqlCommand(sql, sqlc);
                SqlDataReader drUsuarios = cmdUsuario.ExecuteReader();

                string codigoUsuarioMax = "";

                if (drUsuarios.HasRows)
                {
                    while (drUsuarios.Read())
                    {
                        codigoUsuarioMax = drUsuarios["codigoUsuario"].ToString();

                        SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                        sqld.Open();

                        string sql2 = "Select codigoUsuario, emailUsuario, senhaUsuario from usuario where codigoUsuario = " + codigoUsuarioMax;

                        SqlCommand cmdUsuario2 = new SqlCommand(sql2, sqld);
                        SqlDataReader drUsuarios2 = cmdUsuario2.ExecuteReader();

                        if (drUsuarios2.HasRows)
                        {
                            while (drUsuarios2.Read())
                            {
                                SqlConnection sqla = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                                sqla.Open();

                                string sqlAltCriador = "update usuario set senhaUsuario = ";
                                sqlAltCriador = sqlAltCriador + "emailUsuario ";
                                sqlAltCriador = sqlAltCriador + " where codigoUsuario=" + codigoUsuarioMax;

                                SqlCommand alterar = new SqlCommand(sqlAltCriador, sqla);
                                alterar.ExecuteNonQuery();

                                sqla.Close();
                            }
                        }

                        cmdUsuario2.Dispose();
                        drUsuarios2.Close();

                        sqld.Close();
                    }
                }

                cmdUsuario.Dispose();
                drUsuarios.Close();

                sqlc.Close();

                System.Data.SqlClient.SqlConnection sqle = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqle.Open();

                string sqlPegarL = "select * from usuario where codigoUsuario = " + codigoUsuarioMax;

                System.Data.SqlClient.SqlCommand cmdPegarL = new System.Data.SqlClient.SqlCommand(sqlPegarL, sqle);
                System.Data.SqlClient.SqlDataReader drPegarL = cmdPegarL.ExecuteReader();
                drPegarL.Read();

                string emailUsuarioMax = drPegarL["emailUsuario"].ToString();
                string nomeUsuario = drPegarL["nomeUsuario"].ToString();
                string codigoTipoUsuario = drPegarL["codigoTipoUsuario"].ToString();
                string senhaUsuario = drPegarL["senhaUsuario"].ToString();
                string ativoUsuario = drPegarL["ativoUsuario"].ToString();

                cmdPegarL.Dispose();
                drPegarL.Close();


                string emailUsuario = "";
                string codigoUsuario = "";


                string sqls = "select * from usuario";
                System.Data.SqlClient.SqlCommand cmdListar = new System.Data.SqlClient.SqlCommand(sqls, sqle);
                System.Data.SqlClient.SqlDataReader drListar = cmdListar.ExecuteReader();

                if (drListar.HasRows)
                {
                    while (drListar.Read())
                    {
                        codigoUsuario = drListar["codigoUsuario"].ToString();
                        emailUsuario = drListar["emailUsuario"].ToString();

                        emailUsuarioMax = emailUsuarioMax.ToUpper();
                        emailUsuario = emailUsuario.ToUpper();

                        if (codigoUsuario != codigoUsuarioMax && emailUsuario.Equals(emailUsuarioMax))
                        {
                            SqlConnection sqlDelMaquina = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                            sqlDelMaquina.Open();

                            string sqlDeletar = "delete from usuario where codigoUsuario = " + codigoUsuarioMax + "";

                            SqlCommand deletarDetalhe = new SqlCommand(sqlDeletar, sqlDelMaquina);
                            deletarDetalhe.ExecuteNonQuery();

                            sqlDelMaquina.Close();

                            Response.Redirect("Insert.aspx?informacao=sim");
                        }
                    }
                }

                cmdListar.Dispose();
                drListar.Close();
                sqle.Close();

                Response.Redirect(table.ListActionPath);
            }
        }
    }
}
